package com.xcw.test.caozuo;

/**
 * @author bhx
 * @Class P10_
 * @date 2022/11/13 3:27
 * @Description TODO
 */


import java.util.Arrays;
import java.util.Scanner;
/**
 * Alice 正在家里看电视，突然她听见有人在敲门，她觉得很不开心，竟然有人来打扰她看电视。开门后她更不开心了，门后竟然站着 K 个老师，这些老师都是来家访的。Alice 的妈妈看到这么多老师后，赶紧吩咐 Alice 去给老师们倒水喝。Alice 家里只有一个热水壶，这个热水壶每次最多只能烧开L 毫升水。 Alice 家里有 N 个杯子，第 i 个杯子的容量为 ai 毫升。Alice需要从里面选出 K 个杯子给这些老师，然后把每一杯水都倒满，再拿给老师。Alice 现在想知道，她最少得需要烧多少壶水，才能给这 K 名老师倒够水。
 * 考虑下面这个例子，N = 4;K = 4;L = 4; a1 = 2; a2 = 3; a3 = 1; a4 = 5。Alice 至少需要烧 3 次水。第一次烧水后，Alice 可以倒满第一，和第三个杯子。还剩 1 毫升水可以倒到第二个杯子。第二次烧水，Alice 可以倒满第二个杯子，还剩 2 毫升水可以倒到第四个杯子。最后一次烧开的水可以倒满第四个杯子。
 * 输入
 *
 * 第一行输入三个整数 N,K,L。接下来一行 N 个整数。第 i 个整数 代表第 i 个杯子的容量。
 * 输出
 *
 * 输出一行一个整数代表 Alice 最少需要烧多少次水。
 * 题目包含 10 个测试点。
 * 对于第 1,2,3 测试点，满足 N ≤ 20。
 * 对于第 4,5,6 测试点，满足 N ≤ 1000。
 * 对于所有测试点，满足 1 ≤ K ≤ N ≤ 105，1 ≤ ai ,L ≤ 109。
 */
public class P15_ {
    private static Scanner scanner;

    public static void main(String[] args) {
        scanner = new Scanner(System.in);
        String s1 = scanner.nextLine();
        String[] arr1 = s1.split("\\s+");
        scanner = new Scanner(System.in);
        String s2 = scanner.nextLine();
        String[] arr2 = s1.split("\\s+");
        int N = Integer.valueOf(arr1[0]);
        int K = Integer.valueOf(arr1[1]);
        int L = Integer.valueOf(arr1[2]);
        int[] ints = new int[N];
        for (int i = 0; i < arr2.length; i++) {
            ints[i] = Integer.valueOf(arr2[i]);
        }
        Arrays.sort(ints);
        int sum = 0;
        for (int i = 0; i < K; i++) {
            sum += ints[i];
        }
        if (sum%L == 0){
            System.out.println(sum/L);
        } else{
            System.out.println(sum/L + 1);
        }
    }

}
